// 该方法返回一个由通过测试的元素组成的新数组，如果没有通过测试的元素，则返回一个空数组
// 回调函数一共接收3个参数，同 map 方法一样。分别是：「正在处理的当前元素的值、正在处理的当前元素的索引、正在遍历的集合对象」
Array.prototype.filter = function (fn) {
    let arr = []
    for (let i = 0; i < this.length; i++) {
        fn(this[i], i, this) && arr.push(this[i])
    }
    return arr
}

// Test
let array = [1, 2, 3].filter((item) => {
    return item > 1
})

console.log(array) // [ 2, 3 ]

